package cn.base.day06;

public class Test09 {
    public static void main(String[] args) {
        // (4) 在main方法中调用getCount方法，获取水仙花的个数，然后调用getArr方法，将水仙花的个数作为参数传递，
        // 获取到返回值后遍历打印数组。
        int count = getCount();
        int[] arr = getArr(count);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    /**
     * 定义方法public static boolean isSXH(int num) 功能:判断数字num是否是水仙花数,如果是返回true,如果不是返回false。
     *
     * @param num
     * @return
     */
    public static boolean isSXH(int num) {
        int g = num % 10;
        int s = num / 10 % 10;
        int b = num / 100;
        if (num == g * g * g + s * s * s + b * b * b) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 定义方法public static int getCount(),功能：借助isSXH方法，获取100到999以内水仙花个数，
     *
     * @return
     */
    public static int getCount() {
        int count = 0;
        for (int i = 100; i <= 999; i++) {
            if (isSXH(i)) {
                count++;
            }
        }
        return count;
    }


    /**
     * 定义方法public static int[] getArr(int count)，根据参数值创建int数组，count为数组长度，借助isSXH方法，
     * 获取100到999以内水仙花数，存入到数组并返回。
     *
     * @param count
     * @return
     */
    public static int[] getArr(int count) {
        int[] arr = new int[count];
        int index = 0;
        for (int i = 100; i <= 999; i++) {
            if (isSXH(i)) {
                arr[index] = i;
                index++;
            }
        }
        return arr;
    }
}
